<?php
header('content-type:text/html;charset=utf-8');
//测试普通原子
$subject='king!this is maizi.1234567890HELLO WROLD';
$pattern='#king#';
$pattern='#!#';
$pattern='#\.#';
//匹配非打印字符
$subject="\n";
$pattern='#\n#';
//测试通用字符类
$subject='king!this is maizi.1234567890HELLO WROLD';
$pattern='#\d#';//匹配0-9的数字
$pattern='#[0-9]#';
$pattern='#[3-5]#';
$pattern='#\D#';//\D,除了数字以外的字符
$pattern='#\w#';//匹配a-zA-Z0-9_
$pattern='#\W#';//匹配除了[^a-zA-Z0-9_]
$pattern='#[0-9a-zA-Z_]#';//等价于\w
$pattern='#[^0-9a-zA-Z_]#';//等价于\W
$pattern='#\s#';//\s所有的空白符
$pattern='#\S#';//\S匹配所有的非空白字符
$pattern='#[ \f\n\r\t\v]#';//\s
$pattern='#[^ \f\n\r\t\v]#';//\S
$pattern='#[aeiou]#';
//测试元字符
$subject='ggle';
$pattern='#go*gle#';//*匹配前面的原子0次1次或多次
$pattern='#go{0,}gle#';//等价于*
$pattern='#go+gle#';//+匹配前面的原子1次或多次
$pattern='#go{1,}gle#';//等价于+
$pattern='#go?gle#';//?匹配其前的原子0次或1次
$subject="\n";
$pattern='#.#';//.匹配除了换行符以外的任意字符
$subject='king&maizi';
$pattern='#king|maizi#';//|匹配|前面或者后面的内容
$subject='goooooogle';
$pattern='#go{2}gle#';//{n}匹配其前面的原子正好出现n次
$pattern='#go{2,}gle#';//{n,}其前面的原子出现大于等于n次
$pattern='#go{2,5}gle#';//{n,m}其前面的原子出现大于等于2小于等于5
$subject='this is a test~!This is King Show Time';
$pattern='#^king#';//以什么开始，指定开始的位置
$pattern='#\Athis is a test#';
$pattern='#Time$#';//$匹配结束位置
$subject='this is a test ';
$pattern='#^this is a test$#';//严格匹配，只包含这句话
$subject='th a ising testr';
$pattern='#\bis\b#';//匹配单词is
$pattern='#is\b#';
$pattern='#\bis#';
$subject='this hello';
$pattern='#\Bis#';//匹配单词边界以外的内容
$subject='singising  ';
$pattern='#is\B#';//不以is结尾
$pattern='#\Bis\B#';//不以is开始也不以is结尾
$pattern='#[abcdef]#';//[abcd]方括号之前的任意一个内容
$pattern='#[^abcdef]#';//除了方括号中以外的任意内容
$subject='hello world';
$pattern='#hello (king|world)#';//可以把()中的内容当作整体，以后反向引用的时候来使用
//测试PHP正则内置的字符簇
$subject='abcd!ef A123';
$pattern='#[[:alpha:]]#';//匹配任何字母
$pattern='#[[:digit:]]#';//匹配任何数字
$pattern='#[[:alnum:]]#';//匹配任何数字和字母
$pattern='#[[:space:]]#';//匹配任何空白符
$pattern='#[[:upper:]]#';//匹配任意的大写字母
$pattern='#[[:lower:]]#';//匹配任意的小写字母
$pattern='#[[:punct:]]#';//匹配任意的标点符号
$pattern='#[[:xdigit:]]#';//匹配任意的十六进制数字，等价于[0-9a-fA-F]
//测试模式修正符
$subject='Hello WORLD';
$pattern='#hello#i';//i忽略大小写
$subject="abcking\ndeking\nking";
$pattern='#^king#im';//m多行模式
$subject="\n";
$pattern='#.#s';//s匹配包含换行符在内的任意内容
$subject='helloworld';
$pattern='#hello world#x';//x忽略模式中的空白字符
$subject="<b>Hello</b><b>World</b>";
$pattern='#<b>.*</b>#';//贪婪模式
$pattern='#<b>.*</b>#U';//取消贪婪模式
$pattern='#<b>.*?</b>#';//取消贪婪模式
$pattern='#<b>.*?</b>#U';//取消贪婪模式
$subject="12,king\n";
$pattern='#king$#D';//D让$不忽略字符串中\n换行
if(preg_match($pattern, $subject,$matches)){
    echo '找到了<br/>';
    echo '<pre>';
    print_r($matches);
    echo '</pre>';
}else{
    echo '没找到<br/>';
}